/*
*
==============================================================================
*  Name        : 
*  Part of     : Omen Game Engine
*  Description : 
*  Version     : 1.0
*
*  Copyright (c) 2013 Lauri Kortevaara.
* 
==============================================================================
*/

#pragma once

#include "OmenConfig.h"
#include <IOmenObject.h>

namespace Omen
{
    class IImageFileReader;

    class OMEN_API ITexture : public Omen::IObject
    {
    public:
        typedef enum
        {
            TextureType_1D,        
            TextureType_2D,
            TextureType_3D
        } TextureType;

    public:
        virtual Omen_GUID classId() const = 0;    /// <summary>Defines the class ID</summary>
        
        virtual void setFilePath( const std::wstring& filePath ) = 0;
        virtual std::wstring filePath() const = 0;
        virtual std::wstring& filePath() = 0;

        virtual Omen::Float u_scale() const = 0;
        virtual Omen::Float v_scale() const = 0;
        virtual Omen::Float u_offset() const = 0;
        virtual Omen::Float v_offset() const = 0;

        virtual Omen::Float rotation() const = 0;
        virtual WORD tiling() const = 0;

        virtual void set_u_scale(Omen::Float scale) = 0;
        virtual void set_v_scale(Omen::Float scale) = 0;
        virtual void set_u_offset(Omen::Float offset) = 0;
        virtual void set_v_offset(Omen::Float offset) = 0;

        virtual void setRotation(Omen::Float rotation) = 0;
        virtual void setTiling( WORD tiling) = 0;

    protected:
    private:
    };
}

/// EOF